                             DeskPic
                             -------

                      Das Bild auf dem Desktop
                      ------------------------


DeskPic  ist  Freeware.  Das  heit,  da   Sie  das  Programm  an  
Freunde,  Bekannte,  usw.  weitergeben  drfen.  Es drfen   KEINE 
Vernderungen  am Programm  oder diesem  Text vorgenommen   werden 
ohne Rcksprache mit dem Autor.

Jegliche  kommerzielle  Nutzung  dieses  Programmes,   sowie  eine 
Weitergabe dieses Programmes gegen eine Gebhr,  wie es  z.B.  bei 
PublicDomain-Hndlern  blich  ist,  ist untersagt  und  wird  bei 
Zuwiderhandlung dementsprechend polizeilich verfolgt.

Ich  gebe  keine  Garantie,  da DeskPic auch  auf  Ihrem  Rechner 
einwandfrei funktioniert oder nicht irgendwelche Schden anrichtet 
(was mir allerdings auch noch NIE passiert ist).
Getestet  habe  ich DeskPic mit einem TT,  und  TOS3.06  in  allen 
eingebauten  Auflsungen  und im Zusammenspiel mit  einer  Matrix-
Grafikkarte,  sowie  auf einem MEGA ST mit TOS 1.03 und  den  dort 
eingebauten Auflsungen.
Ich nehme deswegen an,  da es mit allen Auflsungen laufen  wird, 
welche 1, 2, 4, und 8 Bitplanes untersttzen.
Bei mir funktioniert DeskPic jedenfalls auch mit MiNT0.95 und  dem 
Farbmodus der Matrix-Grafikkarte _einwandfrei_.
    

EINLEITUNG
----------
Dies  ist  eine  unvollstndige   Programmdokumentation,   weitere 
Erluterungen  werden  bei entsprechender Resonanz  oder  Wnschen 
hinzugefgt.  Ich  pershnlich  mag  es  nmlich  berhaupt  nicht 
Anleitungen zu schreiben und habe diese Infos in recht kurzer Zeit 
geschrieben, so da stilitische Fehler durchaus vorkommen (:-).

Die Idee zu diesem Programm kam mir,  als ich eines schnen  Tages 
auf  Arbeit  die Ttigkeit von XLOADIMAGE (mit  dem  Parameter  '-
onroot') auf einer SUN betrachten durfte.
Dort war es doch tatschlich mglich da man whrend des  normalen 
Arbeitens  den  grauen Desktophintergrund von XWindows  mit  einem 
selbsgewhlten Bild verschnern konnte.  Da das ganze ja auch  auf 
IBM-Kompatiblen  Rechnern mit Windows fkt.,  sollte es  doch  kein 
Problem   sein   auch  auf  ATARI-Rechnern  etwas   hnliches   zu 
programmieren.
Womit wir bei der eigentlichen Aufgabe von DeskPic sind.  Es  soll 
den  doch  ansonsten trostlosen Desktophintergrund  mit  schmucken 
Bildern verschnern.

Da  ich zudem kurz danach von Karsten Isakovic erfuhr,  da er  an 
etwas  in  der Art schon arbeitet verfiel der Gedanke  daran  doch 
wieder in einige dunklere Regionen meiner grauen Zellen.
Nachdem eine lngere Wartezeit keine Verbesserung meines  Wunsches 
schaffte machte ich mich kurzerhand daran etwas eigenes in  dieser 
Richtung zu programmieren, doch noch nicht zu verffentlichen.

Da  nun  jedoch  schon einige Leute Interesse  an  diesem  Utility 
bekundet hatten "Hallo Christian und Peter, Ihr seid gemeint." und 
zudem  schon  ein anderes Utility in  der  Richtung  aufgetauchte, 
welches jedoch nicht meinen Ansprchen gengte,  wurde es  langsam 
Zeit mein Utility der ffentlichkeit einmal vorzulegen, an dem ich 
sporadisch von Zeit zur Zeit etwas verbessere.


VORAUSSETZUNGEN
---------------
DeskPic  sollte auf jedem ATARI-Computer der Serie ST/STE oder  TT 
funktionieren.  Eine spezielle Version fr Rechner mit FPU wie  im 
TT  gibt  es nicht,  da so gut wie keine  Floating-Points  genutzt 
werden und eine spezielle Version fr CPU's >= 68020 gerade einmal 
8% an Geschwindigkeitsvorteil beim Laden von Bildern bringt.
Ob es allerding korrekt mit MultiTos laufen wird,  kann ich  nicht 
mit Bestimmtheit sagen.
DeskPic funktioniert in allen mir bekannten  Auflsungen,  solange 
die Farbanzahl nicht 256 bersteigt.
Zustzlich   dazu  fkt.   DeskPic  auch  im  TrueColor-Modus   der 
Grafikkarten von Matrix und Spektrum,  wobei als  TrueColor-Format 
24Bit-Targa-Bilder  geladen werden knnen.  Der  Speicherverbrauch 
hierbei ist jedoch enorm.


Mitgelieferte Dateien:
.\deskpic\auto\deskpic.prg    Das Programm fr den AUTO-Ordner
.\deskpic\deskpic.acc         Das Accessorie
.\deskpic\deskpic.inf         Eine Infodatei als Beispiel

Das  Programm 'DESKPIC.PRG' installiert sich resident  im  Rechner 
mittels XBRA-Kennung und Cookie Eintragung.  Die Kennung lautet in 
beiden Fllen 'DEPI'.  Dabei wird der VDI-, BIOS- und (mittels der 
Datei  'deskpic.inf'  whlbar) der GEMDOS-Vektor und  der  System-
Vektor von etv_term verbogen.

Das  Accessorie 'DESKPIC.ACC' ist das entsprechende Accessorie  zu 
dem  residenten Teil und kommuniziert mittels  Cookie-Eintrag  mit 
diesem.  Das Accessorie allociert resident Speicher,  der je  nach 
aktueller Bildschirmauflsung unterschiedlich gro ist.  Berechnen 
lt sich der Speicherverbrauch wie folgt:
"((XAuflsung+7)/8) * YAuflsung * AnzahlDerBitplanes".
Bei  einer  Auflsung  von 1024*768 in 256  Farben  (8  Bitplanes) 
werden   also  alleine  fr  das  Hintergrundbild   786432   Bytes 
allociert.
Zustzlich  dazu  werden ca.  150KB fr DeskPic  selbst  bentigt, 
woraus folgt, da man fr dieses Utility schon einiges an Speicher 
haben  sollte,  wenn  man  noch einigermaen  mit  seinem  Rechner 
arbeiten mchte.


INSTALLATION
------------
Kopieren  Sie  die Datei DESKPIC.PRG in  Ihren  Auto-Ordner  (Eine 
spezielle  Reihenfolge der darin enthaltenen Programme  ist  nicht 
relevant).
Das  Accessory  DESKPIC.ACC  sollte in das  Verzeichnis  fr  Ihre 
Accessories (In der Regel die Root von Lauwerk C).
Booten sie Ihren Rechner neu (Kalt- oder Warmstart).


BEDIENUNG
---------
Die  Bedienung des Accesories ist  eigentlich  kinderleicht,  doch 
hier die Beschreibung:
Wenn  man  den Accesorie-Eintrag namens  DeskPic  ausgewhlt  hat, 
erscheint  eine Dialogbox,  welche die Schnittstelle zum  Benutzer 
darstellt.

In dem umrahmten Kstchen mit Titel 'Hintergrund' sind 2  Schalter 
zu finden, die die Bezeichnung 'Ein' und 'Aus' haben.
Whlt man den Schalter 'Ein' wird das Hintergrundbild dargestellt.
Whlt  man  den  Schalter 'Aus'  wird  das  Hintergrundbild  nicht 
dargestellt.

In  dem umrahmten Kstechen mit dem Titel 'Bild' ist ein Knopf  zu 
finden, der die Bezeichnung 'laden' trgt.
Wird dieser Knopf angewhlt, ffnet sich eine Fileselectbox um ein 
Bild fr den Hintergrund zu laden.
Ladbare Dateiformate sind:
.GIF GIF87a und GIF89a
.IMG monochrome IMG's und farbige XIMG's
.PAC monochrome STAD-Bilder
.PI? Degas-Bilder (nur ungepackte DEGAS-Bilder)
.NEO Neochrombilder
.DOO Doodle-Bilder
.TGA unkomprimierte 24Bit-Targa Bilder
Wurde eines der obigen Bildformate ausgewhlt verwandelt sich  der 
Mauszeiger in ein Diskettensymbol solange die Datei geladen wird.
Einzige  Ausnahme  ist  hier das  GIF-Format,  bei  dem  sich  der 
Mauszeiger  in einen animierten Rechenschieber verwandelt  solange 
das GIF-Bild geladen und entpackt wird.
Wurde   das  ausgewhlte  Bild  erfolgreich  geladen   (Wann   ein 
Nichterfolg  auftreten  knnte kann man  weiter  unten  nachlesen) 
wurde,  dann  wird das Hintergrundbild automatisch  eingeschaltet. 
Andernfalls  ndert  sich  nichts an den  Einstellungen  und  eine 
Fehlermeldung erscheint.

Der  Knopf  mit der Bezeichnung 'Speichern' sichert  das  momentan 
geladene Bild in einem Schnellladeformat ab,  welches nur in exakt 
der gleichen Auflsung und mit der gleichen Grafikkarte ladbar ist 
bzw. das Bild korrekt anzeigt.
Wer  hat schlielich Lust nach demm Booten jeweils  das  Entpacken 
eines GIF-Bildes abzuwarten (:-).

Ein  weitere Knopf ist mit der Bezeichnung 'Info' zu  finden,  der 
bei  Aktivierung eine weitere Dialogbox mit einigen Infos  zu  dem 
Programm DeskPic ausgibt.  Diese Dialogbox kann verlassen  werden, 
indem sich Maus zu Maus gesellt (;-).

Der  Knopf mit der Bezeichnung 'Sichern' speichert den  momentanen 
Pfad  und  den Namen des geladenen Bildes in  einer  Datei  namens 
'deskpic.inf' ab, die es ermglicht selbiges Bild nach einem Reset 
automatisch als Desktophintergrund anzumelden.
Wenn DeskPic zum Zeitpunkt des Sicherns ausgeschaltet ist,  ist es 
nach  entsprechender  Rckfrage auch mglich das  momentan  aktive 
Programm  in  eine  Art  Ausnahmeliste  einzubinden,  deren  Daten 
ebenfalls in der Datei 'deskpic.inf' gespeichert werden.
Zustzlich  zu  den  Bildnamen  und  Programmnamen  wird  die  die 
aktuelle   Bildschirmauflsung   und  die  Anzahl   der   momentan 
aktiven  Bitplanes gespeichert.

Der  Knopf  mit  der Bezeichnung 'Ausgang'  schliet  nach  dessen 
Auswahl die Dialogbox von DeskPic.

Der letzte anwhlbare Knopf ist der sogenannte Dragger.
Wenn  man ihn anwhlt und die linke Maustaste  gedrckt  lt,  so 
kann man die Dialogbox wie bei den bekannten FlyDials verschieben.
Auerdem  wird  beim nchsten ffnen der Dialogbox  diese  an  der 
zuletzt geffenten Position erscheinen.


ERLUTERUNGEN
-------------
Wenn  in  der  Dialogbox  von DeskPic  der  Schalter  'Ein'  nicht 
selektierbar ist, dann wurde noch kein Bild geladen.

Wenn  nicht  gengend freier Speicher  vorhanden  ist,  fehlt  der 
Dragger,  und  somit  ist  die Mglichkeit  des  Verschiebens  der 
Dialogbox und der Alertboxen von DeskPic nicht gegeben.
Auerdem  erhlt  man bei der Anwahl des Buttons 'INFO'  nur  eine 
Alertbox mit einem kurzen Info zu DeskPic.

Wenn  man  ein  Bild  ldt,  welches  kleiner  als  der  sichtbare 
Bildschrm  ist,  werden  die Flchen die  ansonsten  frei  bleiben 
wrden  mit  dem geladenen Bild gemustert,  so da  man  z.B.  bei 
Eschergrafiken nicht bemerkt, da das eigentliche Bild kleiner ist 
als der sichtbare Bildschirm.
Wenn  ein  Bild  geladen  wird,   das  grer  als  der  sichtbare 
Bildschirm  ist,   so  wird  ledigiglich  ein  fester  Teilbereich 
dargestellt.
Dieser  Teilbereich  reicht  in der horizontalen  von  0  bis  zur 
horizontalen  Bildschirmauflsung und in der vertikalen von 0  bis 
zur vertikalen Bildschirmauflsung minus der Hhe der Menleiste.

Wird  der Button 'SICHERN' angewhlt und es existiert  schon  eine 
Datei   namens  'deskpic.inf',   so  versucht  DeskPic   die   neu 
hinzugekommenen Informationen am Anfang der Datei einzufgen.  Bei 
zu  geringem  Speicher (wenn die Infodatei nicht komplett  in  den 
Speicher  geladen  werden kann) wird die neue Information  an  die 
Datei angehngt.

Das Bildformat GFB:
-------------------
Es  handelt  sich  um ein Format,  welches ich  fr  das  Programm 
GemFrac einmal entwickelt hatte.
Folgende Daten sind in diesem Bildforat zu finden:
  4 Bytes Kennung (GF25 in der vorliegenden Version)
  4 Bytes Anzahl der Farben.
  4 Bytes Breite des Bildschirms
  4 Bytes Hhe des Bildschirms
  4 Bytes Gre des zu allozierenden Puffers fr den Bildschirm
    n Bytes Grafikdaten, wobei n = ((Bildbreite+7)/8)*Bildhhe*Planes,
    was der gre allocierten Puffers entspricht. 
768 Bytes Farbtabelle => max. 256 Farben.


Die Datei DESKPIC.INF:
----------------------
Wenn  jemand  diese Infodatei 'deskpic.inf' mittels  eines  Editor 
verndern  mchte,  fhre  ich hier das Format  auf,  welches  nur 
ASCII-Zeichen enthalten sollte und jedes angefhrte  Schlsselwort 
durch Leerzeichen getrennt sein mu:

Daten fr automatisches An/Ausschalten:
1. Wort:  Kennung: '#noautoset'
2. Wort:  Name des Cookies,  bei dessen Vorhandensein DeskPic sich 
          nicht  in  den  GemDos-Trap  einklinkt  und  somit   ein 
          automatische An/Ausschalten nicht beachtet wird.
3. Wort:  horizontale  Bildschirmauflsung  in  der  DeskPic  sich 
          nicht automatisch an/ausschalten soll.  
4. Wort:  vertikale Bildschirmauflsung in der DeskPic sich  nicht 
          automatisch an/ausschalten soll.
5. Wort:  Anzahl  der BitPlanes einer Bildschirmauflsung  in  der 
          DeskPic sich nicht automatisch an/ausschalten soll.
Wird  bei  Punkt 2-5 stattdessen die Kennung  'EGAL'  eingetragen, 
nimmt DeskPic an sie sind in jedem Fall wahr.
Falls  es  somit  Probleme mit  einem  anderen  TSR-Programm  geben 
sollte,  das  einen  Cookie installiert,  lt sich somit  in  den 
meisten  Fllen das Problem beheben,  indem man als  2.  Wort  die 
Cookie-Kennung des Probleme bereitenden Programmes angibt oder mir 
eine genaue Fehlermeldung zukommen lt.
Wenn  es bei anderen Programmen Probleme geben sollte oder man  es 
nicht mchte,  da DeskPic sich in den GemDos-Trap  einklinkt,  so 
sollte  man  als  2.  Wort  die Kennung  'egal'  in  das  Infofile 
schreiben.
HINWEIS:  Dies sollte man in jedem Fall ersteinmal probieren, wenn 
Probleme mit DeskPic auftauchen sollten,  da hierdurch der GEMDOS-
Vektor und der Systemvektor fr etv_term _nicht_ verbogen wird.

Daten fr Bilder:
1. Wort:  Kennung '#bilddaten:'
2. Wort:  absoluter  Pfad des zu ladenden Bildes  incl.  Bildname. 
          (Wildcards sind nicht erlaubt).
3. Wort:  horizontale   Bildschirmauflsung   in  der   das   Bild 
          automatisch geladen werden soll.  
4. Wort:  vertikale   Bildschirmauflsung   in   der   das    Bild 
          automatisch geladen werden soll.
5. Wort:  Anzahl  der BitPlanes einer Bildschirmauflsung  in  der 
          das Bild automatsich geladen werden soll.
Wird bei Punkt 2 stattdessen die Kennung 'KEIN_BILD'  eingetragen, 
so  stellt DeskPic in dieser Auflsung kein Bild nach  dem  Booten 
oder einem Auflsungswechsel dar.
Wird  bei  Punkt 3-5 stattdessen die Kennung  'EGAL'  eingetragen, 
nimmt DeskPic an sie sind in jedem Fall wahr.

Daten fr Programme:
1. Wort:  Kennung '#programmdaten:'
2. Wort:  absoluter Pfad des Programmes incl.  Programmname,  oder 
          nur der Programmname (Wildcards sind nicht erlaubt).
3. Wort:  horizontale Bildschirmauflsung in der das die Regel fr 
          das Ausnahmeprogramm zutreffen soll.
4. Wort:  vertikale  Bildschirmauflsung in der die Regel fr  das 
          Ausnahmeprogramm zutreffen soll.
5. Wort:  Anzahl   der  BitPlanes  in  der  die  Regel   fr   das 
          Ausnahmeprogramm zutreffen soll.
Wird  bei  Punkt 3-5 stattdessen die Kennung  'EGAL'  eingetragen, 
nimmt DeskPic an sie sind in jedem Fall wahr.
Somit   hat   man   die   Mglichkeit   fr   seine    bevorzugten 
Bildschirmauflsungen  automatisch  verschiedene Bilder  laden  zu 
lassen. 
Wissenswert dabei ist noch,  da DeskPic die entsprechenden  Daten 
sequentiell  abarbeitet  und  bei einem Eintrag  mit  der  Kennung 
'KEIN_BILD'  fr  die aktuelle Auflsung alle  weiteren  Daten  im 
Infofile ignoriert.
Auerdem  wird  versucht  eine  Doppeleintragung  im  Infofile  zu 
verhindern.
Beispiel:
#noautoset: egal egal egal 4
#bilddaten: f:\puzzle.gif egal egal 4 
#bilddaten: e:\pics\dragon.gif 1024 768 8
#bilddaten: e:\pics\img\usr\cool_dog.img egal egal egal
#programmdaten: calamus.prg egal egal 8
#programmdaten: calamus egal egal 4
#programmdaten: charlimg.prg egal egal 8
#programmdaten: charlimg.prg egal egal 4
#programmdaten: studio.prg egal egal 8
#programmdaten: studio.prg egal egal 4
#programmdaten: titanen.prg egal egal egal


PROBLEME
--------
Mit  einigen Dateiformaten kann es zu Problemen fhren,  die  sich 
darin  uern,  da  sie unter einigen Auflsungen  nicht  geladen 
werden knnen.

Ausnahmen sind hier die Dateiformate GIF87a, GIF89a und monochrome 
IMG's,  welche  in  jeder  Auflsung ladbar sind  in  der  DeskPic 
funktioniert.
Farbige  GIF-Bilder  werden im monochromen  Auflsungen  gedithert 
dargestellt, wobei die Qualitt jedoch nicht sehr berauschend ist. 
Ich  empfehle  in solchen Fllen das GIF-Bild  mit  einem  anderen 
Programm zu dithern und in ein monchromes IMG-Bild zu wandeln.
In   Auflsungen   mit  4  oder  16   Farben   werden   GIF-Bilder 
grundstzlich in Graustufen dargestellt, wenn die Anzahl der darin 
enthaltenen Farben grer ist als die darstellbaren Farben.
Farbige  IMG's sogenannte XIMG's knnen lediglich  in  Auflsungen 
mit  der gleichen Farbanzahl oder Auflsungen mit  einer  greren 
Farbanzahl  dargestellt  werden.
Farbige  DEGAS-Bilder  und  Neochrom-Bilder  knnen  nur  in   der 
Auflsung  dargestellt werden,  in der sie erzeugt wurden oder  in 
Auflsungen die eine gleiche Farbanzahl aufweisen.
Targa    Bilder   werden   lediglich   im   TrueColor-Modus    der 
Frabgrafikkarten  von  Matrix  oder  Spektrum  im   Echtfarbformat 
dargestellt.  In  den Farbmodi mit bis zu 8 BitPlanes  werden  die 
Targa-Bilder  in  Graustufen und  im  Monochrommodus werden diese
gedithert dargestellt.

Bei  nicht gengend vorhandenem Speicher kann  es  vorkommen,  da 
einige  Bilder  nicht geladen werden  knnen,  da  einerseits  der 
temporre  Speicher fr diese Bilder nicht angelegt  werden  kann, 
oder   fr   ein   transformieren  vom   Standardformat   in   das 
gerteabhngige Format des VDI kein Speicher mehr vorhanden ist.
Der  erste  Fall kann bei STAD-Bildern,  der letze Fall  bei  GIF-
Bildern   auftreten  und  beide  Flle  knnen  bei   XIMG-Bildern 
auftreten.

Ob  auch XIMG's mit 4 Farben korrekt geladen  dargestellt  werden, 
kann  ich  leider nicht beurteilen,  da es mir nicht  mglich  war 
mit den mir zu Verfgung stehenden Programmen solch ein Bildformat 
zu erzeugen.


PROBLEMLSUNGEN
---------------
Damit  auch  die  Leute  DeskPic  verwenden  knnen,   die   nicht 
allzuviel  Speicher  ihr  Eigen nennen  knnen,  werde  ich  evtl. 
demnchst auch eine Light-Version von DeskPic herausgeben,  wo das 
einzig ladbare Bildformat das monochrome IMG-Format und das  .GFB-
Format sein wird.

Damit  nicht die 16 vor DR vorgegebenen VDI-Farben beim Laden  von 
GIF-Bildern   (bei  den  anderen  Bildformaten  ist  mir  das   zu 
aufwendig,  wenn  nicht gar fast unmglich) zerstrt  werden  (das 
macht  sich  z.B bei ANSI-Farbgrafiken in  Mailboxen  sonst  recht 
schlecht),  werde  ich versuchen in einer der  nchsten  Versionen 
Farbanpassungen  zu implementieren,  die dann ber einen  weiteren 
Schalter erreichbar sind.

Damit  man auch andere Teilbereiche eines Bildes betrachten  kann, 
das  grer ist als die eigentliche Bildschimauflsung  werde  ich 
hchstwahrscheinlich  noch  eine  Mglichkeit  einbauen  die   ein 
Verschieben dieses Teilbereiches erlauben. Das hat dann jedoch zur 
Folge,  da  kurzfristig  mehr Speicher benutzt wird.

Wenn  mir  jemand  eine  besser  funkionierende  Methode  fr  das 
momentan  genutze  Dithern  (z.B.   ein  Dithern  mittels   Floyd-
Steinberg-Algorithmus)  als C-Quellcode zur Verfgung stellt  baue 
ich  ihn  gerne  in  das  Programm  mit  ein.  Momentan  habe  ich 
wichtigeres zu tun (:-).

Wenn  mir  jemand  einen  Algorithmus  fr  Farbdithering  als  C-
Quellcode  zur Verfgung stellen kann baue ich diesen  Algorithmus 
natrlich   liebend   gerne  ein  und  implementiere   dann   auch 
Laderoutinen fr Echtfarbbilder.
In  beiden Fllen wre ich demjenigen sehr dankbar,  es  wre  mir 
eine Menge Arbeit ersparen.
brigends   reichen  mir  schon  Hinweise  wo  ich   entsprechende 
Algorithmen  fr das Colodithering finden kann  (z.B.  in  welchen 
Dokumentationen).




SCHLUBEMERKUNG
---------------
Verbesserungsvorschlge, Wunschlisten, Fehlermeldungen, Drohungen, 
Lobeshymnen  oder  gar  Geldspenden sind an  folgende  Adresse  zu 
schicken:



Norbert Marschalleck
Ehrenpfortensteig 4
W-1000 Berlin 28
Tel.: 030/ 404 27 17 (19h-24h)
Kto.: 7774268 bei Deutsche Bank AG, BLZ 100 700 00

Mausnetz: Norbert Marschalleck @ B
InterNet: nexus@cs.tu-berlin.de
          norbert@charly.ipk.fhg.de
